﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Windows.Forms;
using System.Drawing;
using System.Text.RegularExpressions;
using System.Data.SqlClient;

namespace FrbaCommerce.Clases
{
    public class Cliente_Dir_Doc
    {
        public int id { get; set; }
        public string Usuario { get; set; }
        public string Apellido { get; set; }
        public string Nombre { get; set; }
        public int Documento { get; set; }
        public string Tipo { get; set; }
        public DateTime FechaNacimiento { get; set; }
        public string Mail { get; set; }       
        public string Direccion { get; set; }
        public int Nro { get; set; }
        public int Piso { get; set; }
        public string Depto { get; set; }
        public string CP { get; set; }
        public string Localidad { get; set; }
        public string Ciudad { get; set; }
        public bool Habilitado { get; set; }


        public List<Cliente_Dir_Doc> GetClientes(string nombre, string apellido, string tipo, string dni, string mail)
        {
            List<Cliente_Dir_Doc> listaDeClientes = new List<Cliente_Dir_Doc>();
            ConexionSql conexionSql = new ConexionSql();
            DataSet datos = new DataSet();
            string query = " SELECT C.id, U.username, C.apellido, C.nombre, C.documento_numero, Doc.documento, C.fecha_nacimiento, C.mail, ";
            query += "D.domicilio, D.nro, D.piso, D.dpto, D.cp, D.localidad, D.ciudad, C.habilitado ";
            query += "FROM ASDF.Cliente C JOIN ASDF.Direccion D ON D.id = C.direccion ";
            query += "JOIN ASDF.Tipo_documento Doc ON Doc.id = C.documento_tipo ";
            query += "JOIN ASDF.Usuario U ON U.id = C.id ";
            if (nombre.Length != 0 || apellido.Length != 0 || dni.Length != 0 || tipo.Length != 0 || mail.Length != 0)
            {
                query += " WHERE ";
                if (nombre.Length != 0)
                {
                    query += ArmarCondicion2("C.nombre", nombre);
                    if (apellido.Length != 0 || dni.Length != 0 || mail.Length != 0 || tipo.Length != 0)
                    {
                        query += " AND ";
                    }
                }
                if (apellido.Length != 0)
                {
                    query += ArmarCondicion2("C.apellido", apellido);
                    if (dni.Length != 0 || tipo.Length != 0 || mail.Length != 0)
                    {
                        query += " AND ";
                    }
                }
                if (dni.Length != 0)
                {
                    query += ArmarCondicion("C.documento_numero", dni);
                    if (tipo.Length != 0 || mail.Length != 0)
                    {
                        query += " AND ";
                    }
                }
                if (tipo.Length != 0)
                {
                    query += ArmarCondicion("Doc.documento", tipo.Replace(" ",""));
                    if (mail.Length != 0)
                    {
                        query += " AND ";
                    }
                }
                if (mail.Length != 0)
                {
                    query += ArmarCondicion2("C.mail", mail);
                }
            }
            datos = conexionSql.ejecutarConsulta(query);
            foreach (DataRow fila in datos.Tables[0].Rows)
            {
                listaDeClientes.Add(this.cargarCliente(fila));
            }

            return listaDeClientes;

        }

        private string ArmarCondicion(string nombreCampo, string contenido)
        {
            string query = " " + nombreCampo + " = '" + contenido + "' ";
            return query;
        }

        private string ArmarCondicion2(string nombreCampo, string contenido)
        {
            string query = " " + nombreCampo + " LIKE '%" + contenido + "%' ";
            return query;
        }

        private Cliente_Dir_Doc cargarCliente(DataRow fila)
        {
            Cliente_Dir_Doc cliente = new Cliente_Dir_Doc();
            cliente.id = Convert.ToInt16(fila.ItemArray[0].ToString());
            cliente.Usuario = fila.ItemArray[1].ToString();
            cliente.Apellido = fila.ItemArray[2].ToString();
            cliente.Nombre = fila.ItemArray[3].ToString();
            cliente.Documento = Convert.ToInt32(fila.ItemArray[4].ToString());
            cliente.Tipo = fila.ItemArray[5].ToString();
            cliente.Tipo = cliente.Tipo.Replace(" ", "");
            cliente.FechaNacimiento = Convert.ToDateTime(fila.ItemArray[6].ToString());
            cliente.Mail = fila.ItemArray[7].ToString();
            cliente.Direccion = fila.ItemArray[8].ToString();
            cliente.Nro = Convert.ToInt16(fila.ItemArray[9].ToString());
            cliente.Piso = Convert.ToInt16(fila.ItemArray[10].ToString());
            cliente.Depto = fila.ItemArray[11].ToString();
            cliente.CP = fila.ItemArray[12].ToString();
            cliente.Localidad = fila.ItemArray[13].ToString();
            cliente.Ciudad = fila.ItemArray[14].ToString();
            cliente.Habilitado = Convert.ToBoolean(fila.ItemArray[15].ToString());
            return cliente;
        }


	  
    }
}
